Digital voice or audio communication systems transmit audio data enclosed in a stream of packets, or packet streams, through a network. A packet stream is generally referenced with a sequence number, which represents the position of a packet relative to another packet in the packet stream. A packet stream is also generally referenced with a timestamp to indicate the time spacing between individual packets. Different factors may affect the quality of the audio or video stream when received after transmission. One factor may be the packet loss when packet collisions occur or when the network is overloaded. A second factor may be the delay of some packets relative to other packets in the same stream, which prevents the stream being output in the right order. Packet loss and delay factors may lead to reception of packets in an incorrect order and at a non-constant rate, thereby causing packet jitter, which is another problem of known systems.
The use of a jitter buffer is a well-known solution to solve packet jitter problems. The role of the jitter buffer is to store some packets from the stream for a defined period of time in order to wait for other slower packets, and to reorder the packets from the stream based on their sequence number. Then, using the indication of timestamps for all the packets, the jitter buffer is able to output the ordered packet stream with the correct timing.
However, in some specific situations such as when the network is overloaded in a substantial and/or sudden way, the jitter buffer may be unable to solve all the packet jitter problems.
US2004002262 discloses a method relating to an acceptance window based on sequence numbers of each packet in the stream, such that the jitter buffer gains time when reading the timestamp of each packet.
U.S. Pat. No. 6,862,298 and U.S. Pat. No. 6,684,273 disclose a method relating to the adaptation of the size of the jitter buffer by correlating the delay with some predefined threshold values.
The above cited prior art documents solve some problems, but do not solve jitter problems relating to extreme conditions such as a sudden substantial change in packet delays.